草庐IT

c++ - C 明显比 C++ 快吗

全部标签

java - 这个方法比 Math.random() 快吗?

我是一名初学者,目前正在着手开发一款使用粒子群优化算法的Android游戏。我现在正在尝试稍微优化我的代码,并且我在for循环中有很多Math.random()几乎一直在运行。所以我在想一种绕过并跳过所有Math.random()调用的方法。通过使用这样的方法:floatrandom[]=newfloat[100];staticintrandomIndex=0;privatefloatmyRandom(){if(randomIndex>=99)randomIndex=0;elserandomIndex=randomIndex+1;returnrandom[randomIndex];}.

java - C++ ifstream.getline() 明显比 Java 的 BufferedReader.readLine() 慢?

我正在重写我的一个Android应用程序以利用NDK,每次它必须做的第一件事就是打开一个1.5MB的文本文件(大约150k行)并将每一行在数据结构中。当我使用Java的BufferedReader.readLine()执行此操作时,从SD卡读取文件大约需要2.5秒。这是我为此使用的代码:try{BufferedReaderbr=newBufferedReader(newFileReader("/sdcard/testfile.txt"));StringthisLine;while((thisLine=br.readLine())!=null){Log.d(TAG,thisLine);}

android - 大图像(来自文件)未在 Picasso 中加载,没有看到明显的错误

我正在编写一个应用程序,它从设备上的图库中获取图像列表,然后在GridView中显示它们。在我的适配器中,我有以下代码(其中宽度和高度是它将放置在其中的View的宽度和高度):PicassoSingleton.with(mContext).load("file://"+imageUri).resize(getImageWidth(),getImageHeight()).centerInside().placeholder(R.drawable.image_placeholder).error(R.drawable.image_error).into(holder.image);在大多数

android - fragment 和 fragment Activity 天生就比 Activity 快吗?

Fragments和FragmentActivity是否天生就比Activity快?如果我不需要在fragment中加载我的Activity,我应该使用FragmentActivities还是Fragments而不是Activity?我问的原因是因为多年来我一直专门使用Activities,FacebookSDK和GoogleMaps2.0迫使我使用Fragments,我现在想知道它们是否本质上“更好”,与其他一些实现相比。如果这“没有建设性”或“过于开放”,那么答案显然是“否”。但是如果有一些关于这个确切主题的谷歌开发者文档或博客,那么我想知道它 最佳答案

c++ - i=(i+1)&3 比 i=(i+1)%4 快吗

我正在优化C++代码。在一个关键步骤,我想实现以下函数y=f(x):f(0)=1f(1)=2f(2)=3f(3)=0哪个更快?使用查找表或i=(i+1)&3或i=(i+1)%4?或者有更好的建议吗? 最佳答案 几乎可以肯定,查找表将是最慢的。在很多情况下,编译器会为(i+1)&3和(i+1)%4生成相同的程序集;然而,根据i的类型/符号,它们可能不是严格等价的,编译器将无法进行优化。例如代码intfoo(inti){return(i+1)%4;}unsignedbar(unsignedi){return(i+1)%4;}在我的系统上

c++ - 假栈比真栈快吗

我正在做一些递归解析。目前我有一个假堆栈,我在其中存储我的有限状态机的状态,因此当我递归地向下钻取时,我插入我所在的状态,并在我完成递归的文本位处理后弹出它。拥有像这样的“stateid”堆栈会更快吗:int*stack=0inttop=0;//...//drilldownbitif(stack==0)stack=(int*)malloc(STACK_JUMP_SIZE);elseif(top%STACK_JUMP_SIZE==0)stack=(int*)realloc(stack,(top+STACK_JUMP_SIZE)*sizeof(int));stack[top++]=curr

c++ - 为什么 Cppcheck 没有发现这个明显的数组越界错误呢?

我安装了Cppcheck我的C++项目的静态代码分析工具,感觉它的性能很差。例如,谁能告诉我为什么Cppcheck无法在以下代码中找到数组越界错误?voidf(intc){char*p=newchar[10];p[c]=42;}voidg(){f(100);}有一个onlinedemo可以使用Cppcheck方便地检查此代码。它所带来的只是第4行的内存泄漏,没有潜在缓冲区溢出的迹象。 最佳答案 我是Cppcheck开发人员。Cppcheck无法检测到这一点并非设计使然。Cppcheck目前不使用所有函数调用的所有给定参数来评估函数。

c++ - 为什么 <iostream> operator<< 选择明显错误的重载?

考虑这段代码:#includeusingnamespacestd;classX{public:operatorconstwchar_t*()const{returnL"Hello";}};voidf(constvoid*){wcout输出为(使用VS2015C++编译器编译):f(constwchar_t*)00118B30所以看起来编译器选择了预期的constwchar_t*f过载(因为存在从X到constwchar_t*的隐式转换)。但是,似乎wcout选择constvoid*过载,而不是constwchar_t*一个(打印地址,而不是wchar_t字符串)。这是为什么?P.S.我

c++ - std::map: find(key)->second 比 [] 运算符快吗?

std::mapx;x[5]=1.2;doubley=x[5];doublez=x.find(5)->second;这2个分配中的一个会比另一个执行得更快吗?(假设请求的键始终存在于映射中)在执行x.find(5)->second时,是否存在与迭代器取消引用相关的任何开销?编辑:感谢您的回复。在我的特定函数中,既然我知道它并不慢,我可能会使用x.find(5)->second因为我需要标记我的函数const(map是一个成员变量)并且[]运算符显然不允许这样做(因为它可能会修改map,因为缺少一个键)。 最佳答案 这没有回答您的问题

windows - 没有明显原因的非常基本的脚本中的 "The input line is too long"错误

下面的脚本cmd/C""setPATH=nasm\;%PATH%"&"echo%PATH%""只打印这个:Theinputlineistoolong.Theinputlineistoolong.为什么?我该如何解决这个问题?P.S.这行得通:cmd/C"echo%PATH%"这不是:cmd/C""echo%PATH%"" 最佳答案 OP的问题与我的略有不同,但我在非常基本的脚本中也遇到了Theinputlineistoolong错误,原因不明。在我的例子中,它不明显的原因是我早些时候通过递归设置我的路径破坏了我的环境,直到它超过允许